#include <cstdio>
#include <cstring>
#define f(x, y, z) for(int x = (y); x <= (z); ++x)
#define g(x, y, z) for(int x = (y); x < (z); ++x)
#define h(x, y, z) for(int x = (y); x >= (z); --x)

char tim = 0;
struct val{
	char data, type;
	// 0: 'a'; 1: 97
	void out(){
		putchar(' ');
		if(type) printf("%d", (int) data); else putchar(data);
	}
};
char a[107];
val calc(char *l, char *r){
	for(char kn = 0, *i = r - 1; i >= l; --i){
		if(*i == ')') ++kn; else if(*i == '(') --kn;
		else if(!kn && (*i == '+' || *i == '-')){
			val vl = calc(l, i), vr = calc(i + 1, r);
			putchar(*i); vl.out(); vr.out(); putchar('\n');
			return (val) {++tim, (char) 1};
		}
	}
	for(char kn = 0, *i = r - 1; i >= l; --i){
		if(*i == ')') ++kn; else if(*i == '(') --kn;
		else if(!kn && (*i == '*' || *i == '/')){
			val vl = calc(l, i), vr = calc(i + 1, r);
			putchar(*i); vl.out(); vr.out(); putchar('\n');
			return (val) {++tim, (char) 1};
		}
	}
	for(char kn = 0, *i = r - 1; i >= l; --i){
		if(*i == ')') ++kn;
		else if(*i == '(') --kn;
		else if(!kn && *i == '.'){
			val prm[107];
			val e0 = calc(l, i), *pe = prm;
			for(char *j = i + 2, *lj = i + 2; j < r; ++j){
				if(kn == 1 && (*j == ',' || *j == ')')){
					*pe++ = calc(lj + 1, j);
					lj = j;
				}
				if(*j == '(') ++kn; else if(*j == ')') --kn;
			}
			putchar(i[1]);
			e0.out();
			for(val *j = prm; j < pe; ++j) j->out();
			putchar('\n');
			return (val) {++tim, (char) 1};
		}
	}
	if(*l == '(') return calc(l + 1, r - 1);
	else if(l + 1 == r) return (val) {*l, (char) 0};
	val prm[107];
	val *pe = prm;
	for(char kn = 0, *j = l + 1, *lj = l + 1; j < r; ++j){
		if(kn == 1 && (*j == ',' || *j == ')')){
			*pe++ = calc(lj + 1, j);
			lj = j;
		}
		if(*j == '(') ++kn; else if(*j == ')') --kn;
	}
	putchar(*l);
	for(val *j = prm; j < pe; ++j) j->out();
	putchar('\n');
	return (val) {++tim, (char) 1};
}

int main(){
	gets(a);
	calc(a, a + strlen(a));
	return 0;
}
